var gulp = require('gulp');
var del = require('del');
var concat = require('gulp-concat');                    //- 多个文件合并为一个
var rename = require('gulp-rename');
var uglify = require('gulp-uglify');                    //- 压缩JS文件
var minifyCss = require('gulp-minify-css');             //- 压缩CSS文件
var rev = require('gulp-rev');                          //- 对文件名加MD5后缀
var revCollector = require('gulp-rev-collector');       //- 路径替换

// 清理 dist 目录
gulp.task('clean', function(cb) {
    del([
        'dist/css/*',
        'dist/js/*',
        'dist/img/*',
        'index.html'
      ], cb);
});

// 将所有css文件连接为一个文件并压缩，存到 dist/css
gulp.task('concatCss', function() {
    gulp.src(['src/css/*.css'])
        .pipe(concat('markmeditor.min.css'))
        .pipe(minifyCss())
        // .pipe(rev())
        .pipe(gulp.dest('dist/css'));
        // .pipe(rev.manifest())                           //- 生成一个rev-manifest.json
        // .pipe(gulp.dest('./rev/css'));                  //- 将 rev-manifest.json 保存到 rev 目
});

// 将所有js文件连接为一个文件并压缩，存到 dist/js
gulp.task('concatJs', function() {
    gulp.src(['src/js/*.js'])
        .pipe(concat('markmeditor.min.js'))
        .pipe(uglify().on('error', function (err) {
            gutil.log(err);
            this.emit('end');
        }))
        // .pipe(rev())
        .pipe(gulp.dest('dist/js'));
        // .pipe(rev.manifest())
        // .pipe(gulp.dest('./rev/js'));
});

gulp.task('rev', function() {
    gulp.src(['./rev/**/*.json', './demo/*.html'])      //- 读取 rev-manifest.json 文件以及需要进行 css/js 名替换的文件
        .pipe(revCollector())                           //- 执行文件内 css/js 名的替换
        .pipe(gulp.dest('./'));                         //- 替换后的文件输出的目录
});

// 复制文件
gulp.task('copy', function() {
    gulp.src('img/*')
        .pipe(gulp.dest('dist/img'));
    
    gulp.src('demo/index.js')
        .pipe(gulp.dest('./'));

    gulp.src('demo/index.html')
        .pipe(gulp.dest('./'));
});

gulp.task('default', ['clean', 'concatCss', 'concatJs', 'copy']);
